home *** CD-ROM | disk | FTP | other *** search
/ Delphi Magazine Collection 2001 / Delphi Magazine Collection 20001 (2001).iso / DISKS / ISSUE02 / TPACK / TPACK.ZIP / TOOLBAR.PAS < prev    next >
Encoding:
Pascal/Delphi Source File  |  1995-06-01  |  5.8 KB  |  231 lines

  1. {------------------------------------------------------------------------------}
  2. {UNREGISTERED VERSION (6/1/95) PLEASE REDISTRIBUTE IN tPACK.ZIP!
  3.  This revision does not contain everything, nor are the exciting
  4.  DataSetReporter and ExtendedMenu[Item] components included.
  5.  Use SWREG#5906 to receive these, icons and a help file for $130.
  6.  You must register when using this code in a business application!
  7.  You'll receive a license to use this code in up to 50 copies of
  8.  any app you write. In turn you will get responsive e-mail
  9.  tech support and enhancements till I run out of registrations
  10.  or suggestions. Meanwhile.. enjoy the code. Bye! I'll make more.
  11.  {(C)'1995 Michael/Ax-Systems, 71560,1754@Compuserve.com}
  12. {------------------------------------------------------------------------------}
  13.  
  14. unit Toolbar;
  15. {defines a bunch of customized panels.}
  16.  
  17. interface
  18.  
  19. uses Forms, SysUtils, WinProcs, WinTypes,
  20.   Classes, Controls, Buttons, StdCtrls, ExtCtrls;
  21.  
  22. type
  23.   TExtendedPanel = class(TPanel)
  24.   private
  25.     procedure SetUniqueName(const Value:String);
  26.   public
  27.     constructor Create(aOwner:TComponent); Override;
  28.     property UniqueName:String write SetUniqueName stored false;
  29.   published
  30.     end;
  31.  
  32.   TToolBar = class(TExtendedPanel)
  33.   public
  34.     constructor Create(aOwner:TComponent); Override;
  35.     end;
  36.  
  37.   TStatusBar = class(TExtendedPanel)
  38.   public
  39.     constructor Create(aOwner:TComponent); Override;
  40.     end;
  41.  
  42.   TStatusPanel = class(TExtendedPanel)
  43.   private
  44.     procedure ShowHint(Sender: TObject);
  45.   public
  46.     constructor Create(aOwner:TComponent); Override;
  47.     procedure Loaded; Override;
  48.     end;
  49.  
  50.   TMpModes=(mpIdle,mpTime,mdDate,mpResources);
  51.   TMessagePanel = class(TExtendedPanel)
  52.   protected
  53.     fmpMode: TmpModes;
  54.     fTimer: TTimer;
  55.     fPriorIdle: TIdleEvent;
  56.   private
  57.     procedure IdleEvent(Sender: TObject; var Done: Boolean);
  58.     procedure UpdatePanel(Sender: TObject);
  59.     procedure SetMpMode(Value:TmpModes);
  60.   public
  61.     constructor Create(aOwner:TComponent); Override;
  62.     destructor Destroy; Override;
  63.     procedure Click; Override;
  64.   published
  65.     property mpMode: TmpModes read fmpMode write SetMpMode;
  66.     end;
  67.  
  68. {------------------------------------------------------------------------------}
  69.  
  70. implementation
  71.  
  72. {------------------------------------------------------------------------------}
  73.  
  74. constructor TExtendedPanel.Create(aOwner:TComponent);
  75. begin
  76.   inherited Create(aOwner);
  77. end;
  78.  
  79. procedure TExtendedPanel.SetUniqueName(const Value:String);
  80. var
  81.   i:integer;
  82.   a:string[4];
  83. begin
  84.   a:='1';
  85.   i:=1;
  86.   while true do
  87.     if owner.findcomponent(Value+a)=nil then begin
  88.       name:= Value+a;
  89.       break;
  90.       end
  91.     else begin
  92.       inc(i);
  93.       a:=inttostr(i);
  94.       end;
  95. end;
  96.  
  97. {------------------------------------------------------------------------------}
  98.  
  99. constructor TToolBar.Create(aOwner:TComponent);
  100. begin
  101.   inherited Create(aOwner);
  102.   if aOwner.Name<>'' then begin
  103.     Align:=alTop;
  104.     Height:=23;
  105.     UniqueName:='ToolBar';
  106.     Caption:='';
  107.     end;
  108. end;
  109.  
  110. {------------------------------------------------------------------------------}
  111.  
  112. constructor TStatusBar.Create(aOwner:TComponent);
  113. begin
  114.   inherited Create(aOwner);
  115.   if aOwner.Name<>'' then begin
  116.     Top:=TForm(aOwner).Height-1;
  117.     Align:=alBottom;
  118.     Height:=18;
  119.     UniqueName:='StatusBar';
  120.     Caption:='';
  121.     with TMessagePanel.Create(aOwner) do
  122.       Parent:=Self;
  123.     with TStatusPanel.Create(aOwner) do
  124.       Parent:=Self;
  125.     end;
  126. end;
  127.  
  128. {------------------------------------------------------------------------------}
  129.  
  130. constructor TStatusPanel.Create(aOwner:TComponent);
  131. begin
  132.   inherited Create(aOwner);
  133.   if aOwner.Name<>'' then begin
  134.     Align:=alClient;
  135.     UniqueName:='StatusPanel';
  136.     Caption:='';
  137.     Alignment := taLeftJustify;
  138.     BevelOuter := bvLowered;
  139.     end;
  140.   Loaded;
  141. end;
  142.  
  143. procedure TStatusPanel.Loaded;
  144. begin
  145.   inherited Loaded;
  146.   Application.OnHint:=ShowHint;      {WATCH IT!!! THIS is a pretty big assumption}
  147.   Application.ShowHint:=True;
  148.   Application.HintPause:=300;
  149. end;
  150.  
  151. procedure TStatusPanel.ShowHint(Sender: TObject);
  152. begin
  153.   Caption := Application.Hint;
  154. end;
  155.  
  156. {------------------------------------------------------------------------------}
  157.  
  158. constructor TMessagePanel.Create(aOwner:TComponent);
  159. begin
  160.   inherited Create(aOwner);
  161.  
  162.   if aOwner.Name<>'' then begin
  163.     Align:=alRight;
  164.     Width:=85;
  165.     UniqueName:='MessagePanel';
  166.     Caption:='';
  167.     {}
  168.     BevelOuter := bvLowered;
  169.     Alignment := taCenter{LeftJustify};
  170.     {}
  171.     fPriorIdle:= Application.OnIdle;
  172.     Application.OnIdle:=IdleEvent;
  173.     end;
  174.  
  175.   fmpMode:=mpTime;
  176.   fTimer:=TTimer.Create(self);
  177.   fTimer.Interval:=1000;
  178.   fTimer.Enabled:=True;
  179.   fTimer.OnTimer:=UpdatePanel;
  180. end;
  181.  
  182.  
  183. destructor TMessagePanel.Destroy;
  184. begin
  185.   fTimer.enabled:=false;
  186.   fTimer.free;
  187.   Application.OnIdle:=fPriorIdle;
  188.   inherited Destroy;
  189. end;
  190.  
  191. procedure TMessagePanel.SetMpMode(Value:TMpModes);
  192. begin
  193.   if Value<>fmpMode then begin
  194.     fmpMode:=Value;
  195.     fTimer.Enabled:=Value<>mpIdle;
  196.     end;
  197. end;
  198.  
  199. procedure TMessagePanel.Click;
  200. begin
  201.   if fmpmode<high(tmpmodes) then
  202.     mpMode:=succ(fMpMode)
  203.   else
  204.     mpmode:=low(tmpmodes);
  205.   inherited Click;
  206. end;
  207.  
  208. procedure TMessagePanel.IdleEvent(Sender: TObject; var Done: Boolean);
  209. begin
  210.   if assigned(fPriorIdle) then
  211.     fPriorIdle(Sender,Done);
  212.   UpdatePanel(Sender);
  213. end;
  214.  
  215. procedure TMessagePanel.UpdatePanel(Sender: TObject);
  216. begin
  217.   case fmpMode of
  218.     mpIdle,
  219.     mpTime: Caption := TimeToStr(Time);
  220.     mdDate: Caption := DateToStr(Now);
  221.   else
  222.     Caption:= format('%d MB, %d%%',
  223.      [GetFreeSpace(0) shr 20, GetFreeSystemResources(0)]);
  224.     end;
  225. end;
  226.  
  227. {------------------------------------------------------------------------------}
  228.  
  229. end.
  230.  
  231.